package com.jackiechan.day18;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;

public class NiMing {
    public static void main(String[] args) throws
            IllegalAccessException,
            InstantiationException,
            NoSuchMethodException,
            InvocationTargetException,
            NoSuchFieldException {
//        InteImpl niWai = new InteImpl();
//        niWai.show();
//        new Inte() {
//            @Override
//            public void show() {
//                System.out.println("匿名内部类");
//            }
//        }.show();

        Class c = new Inte2() {
            @Override
            public int show() {
                return 4;
            }
        }.getClass();

        Object o = c.newInstance();
        System.out.println(o);
        System.out.println(c.getDeclaredMethod("show").invoke(o));

        // 获取 Inte2 的 i 字段
        Field field = Inte2.class.getField("i");
        System.out.println(field.get(o));

        // 将字段的访问权限设为 true, 即去除 private 修饰符的影响
        field.setAccessible(true);
        // 去除 final 修饰符的影响, 将字段设为可修改的
        Field modifiers =  Field.class.getDeclaredField("modifiers");
        modifiers.setAccessible(true);
        System.out.println(field.getModifiers()+"fdafda" );
        modifiers.setInt(field,field.getModifiers() & ~Modifier.FINAL);
        // 将字段值设为 200
        field.set(o,20);
        System.out.println(field.get(o));

        field.set(o,100);
        System.out.println(field.get(o));

        field.set(o,200);
        System.out.println(field.get(o));


    }
}
interface Inte2{
    int i = 10;
    int show();
}

//class InteImpl implements Inte{
//    String name = "实现类";
//    @Override
//    public void show() {
//        System.out.println("测试接口方法show()");
//        System.out.println("测试 "+name);
//        System.out.println("测试 "+Inte.name);
//    }
//
//}
//interface Inte{
//    String name = "接口"; // public static final
//    void show(); // public abstract
//}